package com.snsoft.web.controller;

import java.sql.SQLException;

import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

import com.snsoft.bean.ResultMap;
import com.snsoft.exception.UserNotFoundException;

import static com.snsoft.util.Constants.*;

/**
 * 
 * @author 慎伟康
 * 
 * @date 2017年11月29日 下午9:44:36
 * 
 * @Description TODO
 *    全局异常处理器，本类中的方法会运用到整个应用程序所有控制器中带有@RequestMapping注解的方法上。
 *    spring in action的作者说这是一个控制器类，那就先把它放在这个包里吧！
 */
@ControllerAdvice  //声明为控制器通知
public class WideExceptionHandler {
	
	/**
	 * 处理SQLException异常
	 * 
	 * @return
	 */
	@ResponseBody
	@ExceptionHandler(SQLException.class)
	public ResultMap handleSQLException(Exception e){
		return new ResultMap(CODE_ERROR, e.getMessage(), null);
	}
	
	/**
	 * 处理UserNotFoundException异常
	 * 
	 * @return
	 */
	@ResponseBody
	@ExceptionHandler(UserNotFoundException.class)
	public ResultMap handleUserNotFoundException(Exception e){
		return new ResultMap(CODE_ERROR, e.getMessage(), null);
	}
}
